package com.firewolf.fr.s008_templateloader;

import java.io.File;

import com.bw.util.PuthUtil;

import freemarker.cache.ClassTemplateLoader;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
 * 模板加载
 * @author liuxing
 *
 */
public class TemplateLoaderDriver {
	public static void main(String[] args) throws Exception {
		Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
		Configuration cfg2 = new Configuration(Configuration.VERSION_2_3_23);
		// 文件路径加载：指定路径加载，不适用于开发环境，打成jar包后就找不到了
		cfg.setDirectoryForTemplateLoading(new File("ftl"));// 绝对路径或者是相对于项目的路径
		Template t = cfg.getTemplate("008_ftl1.ftl");
//		System.out.println("setDirectoryForTemplateLoading加载: "+t);

		// 使用类路径加载，
		// 第一个参数：类加载器如果是主类，使用类名.class，如果是普通JAVA类，使用getClass()
		// 第二个参数：相对于当前类的路径，
		System.out.println("Class文件所在路径："+TemplateLoaderDriver.class.getResource("/").getPath());
		cfg2.setClassForTemplateLoading(TemplateLoaderDriver.class, "/s008_ftl");
		Template t2 = cfg2.getTemplate("008_ftl1.ftl");
//		System.out.println("setClassForTemplateLoading加载: "+t2);

		// 同时加载多个目录下的模板
		// 文件路径加载器
		FileTemplateLoader tl1 = new FileTemplateLoader(new File("ftl"));
		// 类路径加载器
		ClassTemplateLoader tl2 = new ClassTemplateLoader(TemplateLoaderDriver.class, "../../../../s008_ftl");
		ClassTemplateLoader tl3 = new ClassTemplateLoader(TemplateLoaderDriver.class, "../../../../s008_ftl2");

		TemplateLoader[] tls = {tl3 , tl1,tl2 }; // 创建加载器数组
		MultiTemplateLoader mtl = new MultiTemplateLoader(tls);// 多个加载器
		cfg.setTemplateLoader(mtl);

		System.out.println("MultiTemplateLoader加载："+cfg.getTemplate("008_ftl1.ftl"));
		System.out.println("MultiTemplateLoader加载："+cfg.getTemplate("008_ftl2.ftl"));

	}
}
